package com.fang.shirotestnoredis.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.fang.shirotestnoredis.common.ServerResponse;
import com.fang.shirotestnoredis.pojo.User;
import com.fang.shirotestnoredis.shiro.JWTToken;
import com.fang.shirotestnoredis.util.JWTUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@Slf4j
public class UserService {


    // /**
    //  * 用户注册
    //  */
    // @Transactional
    // public ServerResponse register(String userId, String userName, String paswd, String phone, String codeAccount){
    //     User isExitUser = userDao.selectById(userId);
    //     if (isExitUser != null){
    //         return ServerResponse.createUserIsExist();
    //     }else {
    //         User user = new User();
    //         user.setUserId(userId);
    //         System.out.println(userId   + "--->" + paswd);
    //         user.setUserName(userName);
    //         //现将前端传入的密码进行加密，加密方式：MD5，盐值：用户Id，加密次数：100
    //         user.setPaswd(new Md5Hash(paswd,user.getUserId(),100).toString());
    //         System.out.println("reg: " + user.getPaswd());
    //         user.setPhone(phone);
    //         user.setCodeAccount(codeAccount);
    //         user.setGroup("");
    //         //设置为0，表示注册的用户默认为普通成员，1为组长，由管理员分配，2为管理员
    //         user.setUserAuthority(0);
    //         user.setUserStatus(true);
    //         //插入数据库
    //         userDao.insert(user);
    //         return ServerResponse.createBySuccess("注册成功！");
    //     }
    // }

    /**
     * 用户登录
     */
    public ServerResponse login(String userId, String paswd){
        try {
            // System.out.println(paswd);
            // User user = userDao.selectById(userId);
            // user.setPaswd(new Md5Hash(paswd,user.getUserId(),100).toString());
            // System.out.println("login: " + user.getPaswd());
            User user = new User();
            user.setID("123456");
            user.setUsername("admin");
            user.setPassword("admin");
            //生成签名
            String token = JWTUtil.sign(user);
            //构造JWT Token
            JWTToken jwtToken = new JWTToken(token);
            //shiro安全框架：获取subject对象
            Subject subject = SecurityUtils.getSubject();
            //设置token
            subject.login(jwtToken);
            // User userData = userDao.selectById(userId);
            //将user对象返回给前端
            return ServerResponse.createBySuccess(user,token);
        }catch (Exception e){
            //发生异常，说明登录失败
            return ServerResponse.createPasswordIsError();
        }

    }




}
